home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games Extra 1996 September / Amiga Games Extra CD-ROM 9-1996.iso / userbox / publicdomain / wbstars / source / wbstars_main.c < prev    next >
C/C++ Source or Header  |  1996-07-09  |  3KB  |  182 lines

  1.  
  2. #include "WBStars_include.h"
  3. #include "WBStars_protos.h"
  4. #include "WBStars_gui.h"
  5.  
  6. long    _stack=4000;
  7. char    *_procname="WBStars";
  8. long    _priority=0;
  9. long    _BackGroundIO=FALSE;
  10.  
  11. char    version[30]={"$VER: WBStars 1.2 (09.07.96)"};
  12.  
  13. struct NewBroker    newbroker = {
  14.     NB_VERSION,
  15.     "WBStars",
  16.     "Version 1.2 ©1996 by Alexander Pokahr",
  17.     "The Warp engine for Workbench !",
  18.     NBU_NOTIFY|NBU_UNIQUE,    COF_SHOW_HIDE,    0,    0,    0
  19. };
  20.  
  21. CxObj            *broker;
  22. struct MsgPort    *broker_mp;
  23. ULONG            cxsigflag;
  24.  
  25. struct stars far    star[MAXSTARS];
  26. short                az=AZI;
  27. short                he=HEI;
  28. short                az2=AZI;
  29. short                he2=HEI;
  30. short                wbs_pri=PRI;
  31. char                status=ACTIVE;
  32. char                mode=STRTMODE;
  33. char                anzstars=MAXSTARS;
  34. char                warpf=WRP;
  35. short                bgpen=BACKPEN;
  36. char                PEN[256]={2};
  37. char                npen=NPEN;
  38.  
  39. void _main( char *line )
  40. {
  41.     CxMsg *msg;
  42.  
  43.     if(OpenLibraries())
  44.     {
  45.         if (broker_mp = CreateMsgPort())
  46.            {
  47.                newbroker.nb_Port = broker_mp;
  48.                cxsigflag = 1L << broker_mp->mp_SigBit;
  49.             if (broker = CxBroker(&newbroker, NULL))
  50.                {
  51.                 ActivateCxObj(broker, 1L);
  52.                 LoadPrefs();
  53.                 SetTaskPri(FindTask(0),wbs_pri);
  54.                 Screen=NULL;
  55.                 wnd=NULL;
  56.                 Warp();
  57.                 DeleteCxObj(broker);
  58.                 while(msg = (CxMsg *)GetMsg(broker_mp))
  59.                 {
  60.                           ReplyMsg((struct Message *)msg);
  61.                 }
  62.             }
  63.                DeletePort(broker_mp);
  64.         }
  65.     }
  66.     CloseLibraries();
  67. }
  68.  
  69. void    Warp()
  70. {
  71.     char i;
  72.  
  73.     while( CheckInteraction() )
  74.     {
  75.         if( status==ACTIVE )
  76.         {
  77.             for(i=0; i<anzstars; i++)
  78.             {
  79.                 
  80.                 if( WinWait() )
  81.                 {
  82.                     ClearStar(i);
  83.                     PlotStar(i);
  84.                 }
  85.                 else
  86.                 {
  87.                     break;
  88.                 }
  89.             }
  90.             Delay( STAR_WAIT );
  91.         }
  92.         else
  93.         {
  94.             Delay( EVENT_WAIT );
  95.         }
  96.     }
  97. }
  98.  
  99. void    LoadPrefs()
  100. {
  101.     BPTR    fh;
  102.     char    ch;
  103.     char    dummy;
  104.     char    n;
  105.  
  106.     fh=Open("ENV:WBStars.prefs",MODE_OLDFILE);
  107.     if( !fh )
  108.     {
  109.         fh=Open("WBStars.prefs",MODE_OLDFILE);
  110.     }
  111.     if( fh )
  112.     {
  113.         while( Read(fh,&ch,1) )
  114.         {
  115.             switch( ch )
  116.             {
  117.                 case 83    :
  118.                     Read(fh,&dummy,1);
  119.                     anzstars=NumF(fh);
  120.                     anzstars=min(anzstars,MAXSTARS);
  121.                     break;
  122.                 case 87    :
  123.                     Read(fh,&dummy,1);
  124.                     warpf=NumF(fh);
  125.                     warpf=min(warpf,9);
  126.                     break;
  127.                 case 66    :
  128.                     Read(fh,&dummy,1);
  129.                     bgpen=NumF(fh);
  130.                     break;
  131.                 case 84    :
  132.                     Read(fh,&dummy,1);
  133.                     wbs_pri=NumF(fh);
  134.                     break;
  135.                 case 77    :
  136.                     Read(fh,&dummy,1);
  137.                     mode=NumF(fh);
  138.                     mode=!(mode==MODE_SCREEN);
  139.                     break;
  140.                 case 65    :
  141.                     Read(fh,&dummy,1);
  142.                     az=NumF(fh);
  143.                     az2=az;
  144.                     break;
  145.                 case 72    :
  146.                     Read(fh,&dummy,1);
  147.                     he=NumF(fh);
  148.                     he2=he;
  149.                     break;
  150.                 case 80    :
  151.                     n=NumF(fh);
  152.                     PEN[n]=NumF(fh);
  153.                     npen=max(npen,n);
  154.                     break;
  155.             }
  156.         }
  157.         Close( fh );
  158.     }
  159. }
  160.  
  161. short    NumF( BPTR fh )
  162. {
  163.     char    ch;
  164.     char    ok;
  165.     short    sig=1;
  166.     short    num=0;
  167.  
  168.     ok=Read(fh,&ch,1);
  169.     if(ch==45)
  170.     {
  171.         sig=-1;
  172.         ok=Read(fh,&ch,1);
  173.     }
  174.  
  175.     while( ch<58 && ch>47 && ok )
  176.     {
  177.         num=num*10+ch-48;
  178.         ok=Read(fh,&ch,1);
  179.     }
  180.  
  181.     return sig*num;
  182. }